package jdbc;

import JDBCUI.MainJFrame;

import javax.swing.*;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class jdbcTest01 extends JFrame {

    /**
     存在sql注入现象（安全隐患）
     根本原因:
             用户输入的信息中含有sq1语句的关键字，并且这些关键字参与sq1语句的编译过程，
             导致sol语句的原音被扭曲，讲而达到so1注入。I

     */
    public static void main(String[] args) {
        //初始化界面
        Map<String,String> userLogininfo =  initUI();
        //验证用户名和密码
        boolean loginSuccess= login(userLogininfo);
        //输出结果
        if (loginSuccess){
        System.out.println(loginSuccess ? "登录成功" :"登陆失败");
        MainJFrame mainJFrame = new MainJFrame();
        }else {
            System.out.println(loginSuccess ? "登录成功" :"登陆失败");
        }



    }

    /**
     * 用户登录
     * @param userLogininfo  用户登录信息
     * @return false 表示失败，true表示成功
     */
    public static boolean login(Map<String, String> userLogininfo) {
        boolean loginSuccess =false;
        //JDBC
        Connection conn= null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //1、注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            //2、获取连接
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/work","root","123456");

            //3、创建数据库操作对象
            stmt=conn.createStatement();

            //4、执行sql语句
            String sql="select * from user where username = '"+userLogininfo.get("loginName")+"' and passward = '"+userLogininfo.get("loginPwd")+"'  ";
            rs = stmt.executeQuery(sql);

            //5、处理查询结果集
            if (rs.next()){
                //登陆成功
                loginSuccess=true;
            }


        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            //6、释放资源，从小到大
            if ( conn!= null ){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if ( stmt!= null ){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if ( rs!= null ){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
        return loginSuccess;
    }

    /**
     *初始化用户界面
     *@return 用户输入的登录信息
     */
    public static Map<String, String> initUI() {
        Scanner s =new Scanner(System.in);
        System.out.print("用户名：");
        String loginName =s.nextLine();
        System.out.println("密码：");
        String loginPwd = s.nextLine();
        Map<String,String> userLogininfo = new HashMap<>();
        userLogininfo.put("loginPwd",loginPwd);
        userLogininfo.put("loginName",loginName);

        return userLogininfo;
    }
}
